package cn.iocoder.yudao.module.pay.splitting.pojo.vo;

import cn.iocoder.yudao.framework.business.basic.annotation.AdminJsonView;
import cn.iocoder.yudao.framework.business.basic.annotation.AppJsonView;
import cn.iocoder.yudao.framework.business.basic.pojo.vo.BaseVO;
import cn.iocoder.yudao.framework.validation.InEnumValue;
import cn.iocoder.yudao.module.api.pay.splitting.enums.MallBookSplitStatusEnum;
import com.fasterxml.jackson.annotation.JsonView;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * 视图对象
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/07/22
 */
@Data
public class PaySplittingVO extends BaseVO {

    @Schema(description = "支付单号")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String payNo;

    @Schema(description = "商户号")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String merchantNo;

    @Schema(description = "分账渠道，默认：mallbook")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String channelCode;

    @Schema(description = "分账单号")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String splitNo;

    @Schema(description = "分账用户编号")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String splitUserId;

    @Schema(description = "分账状态：0-待处理、1-成功、2-失败、3-取消、99-出错")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    @InEnumValue(value = MallBookSplitStatusEnum.class)
    private Integer status;

    @Schema(description = "分账是否确认")
    private Boolean received;

    @Schema(description = "分账金额，单位为分")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private Integer amount;

    @Schema(description = "出错信息")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String errorMsg;

    @Schema(description = "分账原始数据")
    @JsonView({AdminJsonView.class, AppJsonView.class})
    private String rawData;

}
